package Ventanas.Listeners;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import Negocio.Cliente;
import Ventanas.GestionClientes;

public class GestionClientesActionListener implements ActionListener {

	JButton bNuevo, bModificar, bGuardar,bCancelar; 
	JTextField textoNombre, textoApellido, textoDNI, textoEmpresa;
	ArrayList<Cliente> clientes;
	Vector v;
	JList listado;
	String estado;
	JTextField textoBusqueda;
	
	public GestionClientesActionListener(JButton bNuevo,JButton bModificar,JButton bGuardar,JButton bCancelar,
			JTextField textoNombre, JTextField textoApellido,
			JTextField textoDNI, JTextField textoEmpresa,List<Cliente> clientes,Vector v, JList listado, String estado,JTextField textoBusqueda) {
		this.bNuevo = bNuevo;
		this.bModificar = bModificar;
		this.bGuardar = bGuardar;
		this.bCancelar = bCancelar;
		
		this.textoNombre = textoNombre;
		this.textoApellido = textoApellido;
		this.textoDNI = textoDNI;
		this.textoEmpresa = textoEmpresa;
		this.clientes = (ArrayList<Cliente>) clientes;
		this.v = v;
		this.listado = listado;
		this.estado = estado;
		this.textoBusqueda = textoBusqueda;
	}



	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if( e.getActionCommand().equals("bNuevo")){
			bModificar.setEnabled(false);
			bGuardar.setEnabled(true);
			bCancelar.setEnabled(true);
			textoNombre.setEditable(true);
			textoNombre.setText("");
			textoApellido.setEditable(true);
			textoApellido.setText("");
			textoDNI.setEditable(true);
			textoDNI.setText("");
			textoEmpresa.setEditable(true);
			textoEmpresa.setText("");
			
		}else if (e.getActionCommand().equals("bCancelar")){
			bModificar.setEnabled(true);
			bGuardar.setEnabled(false);
			textoNombre.setEditable(false);
			textoNombre.setText("");
			textoApellido.setEditable(false);
			textoApellido.setText("");
			textoDNI.setEditable(false);
			textoDNI.setText("");
			textoEmpresa.setEditable(false);
			textoEmpresa.setText("");
			bCancelar.setEnabled(false);
			bNuevo.setEnabled(true);
			
		}else if (e.getActionCommand().equals("bGuardar")){
			Cliente nuevoCliente = new Cliente();

			nuevoCliente.setNombre(textoNombre.getText());
			nuevoCliente.setApellidos(textoApellido.getText());
			nuevoCliente.setDNI(textoDNI.getText());
			nuevoCliente.setEmpresa(textoEmpresa.getText());
			
			if (clientes.contains(nuevoCliente)){
				
				v.remove(clientes.indexOf(nuevoCliente));
				clientes.set(clientes.indexOf(nuevoCliente), nuevoCliente);
				v.add(nuevoCliente);
				listado.setListData(v);
				JOptionPane.showMessageDialog(null, "Usuario modificado correctamente");
			} else {
				
				clientes.add(nuevoCliente);
				v.add(nuevoCliente);
				listado.setListData(v);
			
				
				JOptionPane.showMessageDialog(null, "Usuario guardado correctamente");
				
			}
			
			textoNombre.setEditable(false);
			textoNombre.setText("");
			textoApellido.setEditable(false);
			textoApellido.setText("");
			textoDNI.setEditable(false);
			textoDNI.setText("");
			textoEmpresa.setEditable(false);
			textoEmpresa.setText("");
			bCancelar.setEnabled(false);
			bModificar.setEnabled(true);
			bNuevo.setEnabled(true);
			bGuardar.setEnabled(false);

			
		}else if (e.getActionCommand().equals("bModificar")){
			
			textoNombre.setEditable(true);
			textoApellido.setEditable(true);
			textoDNI.setEditable(false);
			textoEmpresa.setEditable(true);			
			bNuevo.setEnabled(false);
			bCancelar.setEnabled(true);
			bGuardar.setEnabled(true);
			bModificar.setEnabled(false);
			
			
		}else if (e.getActionCommand().equals("busquedaNombre")){
			estado = "nombre";
		}else if (e.getActionCommand().equals("busquedaApellido")){
			estado = "apellido";
		}else if (e.getActionCommand().equals("busquedaDNI")){
			estado = "DNI";
		}else if (e.getActionCommand().equals("buscar")){
			
			if (textoBusqueda.getText().equals("")){
				v.removeAllElements();
				for (Cliente clien:clientes){
					v.add(clien);
				}
				listado.setListData(v);
			} else {
				ArrayList<Cliente> seleccionados = new ArrayList<Cliente>();
				if (estado.equals("nombre")){
					for (Cliente clien:clientes){
						if (clien.getNombre().toUpperCase().contains(textoBusqueda.getText().toUpperCase())){
							seleccionados.add(clien);
						}
					}	
				}else if (estado.equals("apellido")){
					for (Cliente clien:clientes){
						if (clien.getApellidos().toUpperCase().contains(textoBusqueda.getText().toUpperCase())){
							seleccionados.add(clien);
						}
					}	
				}else if (estado.equals("DNI")){
					for (Cliente clien:clientes){
						if (clien.getDNI().toUpperCase().contains(textoBusqueda.getText().toUpperCase())){
							seleccionados.add(clien);
						}
					}	
				}
				
				v.removeAllElements();
				for (Cliente clien:seleccionados){
					v.add(clien);
				}
				listado.setListData(v);
			}
			
			
		}else if (e.getActionCommand().equals("limpiar")){
			v.removeAllElements();
			for (Cliente clien:clientes){
				v.add(clien);
			}
			listado.setListData(v);
			textoBusqueda.setText("");
		}
			
	
		
	}

}
